package exam.ccwtest;

import java.util.*;

import android.app.*;
import android.content.*;
import android.graphics.*;
import android.os.*;
import android.view.*;

public class c06_FreeLine extends Activity {
	private MyView vw;
	ArrayList<Vertex> arVertex;
	
	public void onCreate (Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		vw = new MyView(this);
		setContentView(vw);
		
		arVertex = new ArrayList<Vertex>();
	}
	
	// 정점 하나에 대한 정보를 가지는 클래스
	public class Vertex {
		Vertex (float ax, float ay, boolean ad) {
			x = ax;
			y = ay;
			Draw = ad;
		}
		float x;
		float y;
		boolean Draw;
	}	// Vertex end
	
	protected class MyView extends View {
		Paint mPaint;
		
		public MyView (Context context) {
			super(context);
			
			// Paint 객체 미리 초기화
			mPaint = new Paint();
			mPaint.setColor(Color.BLACK);
			mPaint.setStrokeWidth(3);
			mPaint.setAntiAlias(true);
		}
		
		public void onDraw (Canvas canvas) {
			canvas.drawColor(Color.LTGRAY);
			
			// 정점을 순회하면서 선분으로 잇는다.
			for (int i=0; i<arVertex.size(); i++) {
				if (arVertex.get(i).Draw) {
					canvas.drawLine(arVertex.get(i-1).x, arVertex.get(i-1).y, arVertex.get(i).x, arVertex.get(i).y, mPaint);
				}
			}
		}	// onDraw end
		
		// 터치 이동시마다 정점들을 추가한다.
		public boolean onTouchEvent (MotionEvent event) {
			if (event.getAction() == MotionEvent.ACTION_DOWN) {
				arVertex.add(new Vertex(event.getX(), event.getY(), false));
				return true;
			}
			if (event.getAction() == MotionEvent.ACTION_MOVE) {
				arVertex.add (new Vertex(event.getX(), event.getY(), true));
				invalidate();
				return true;
			}
			return false;
		}
	}
}




















